The transmission control protocol (TCP) is one of the most widely used and reliable data transport protocols across communications networks. One of TCP's primary distinctions and the reasons for its widespread use is that TCP provides reliable communications. A “reliable” data transport protocol is one that provides accurate, loss-free, and in order delivery of data from a source to a destination. If there is any packet loss or packet reordering during transmission of the data across a communications network, TCP internally corrects such an error by retransmitting the lost data and by buffering the out-of-order data until the missing data arrives. TCP then delivers the data to the destination in the same initial order. Hence, by using TCP as its data transport protocol, an application can effectively operate in a best-effort packet switched network that does not guarantee data packet delivery. This reliable transport capability simplifies data communications, thus resulting in the widespread adoption of TCP.
TCP utilizes various internal algorithms to provide its capability of reliable transport. These algorithms include initial session establishment, slow start, packet reordering, packet loss detection, and numerous other mechanisms to dynamically decrease or increase the data transmission rate based on network conditions.
Network latency is a common problem that affects network and application performance. Network latency is attributable to several factors, including physical distance, number of hops, switching and router delays, and network congestion. Because these factors are not constants, networks may have unpredictable latency over a period of time. The variation in network latency depends on the distance spanned by the network link and the transmission medium used by the link. For instance, a local high-speed dedicated line between two buildings within a metro area may experience less than 5 milliseconds (ms) of one-way latency, while a global long distance asynchronous transfer mode (ATM) link between the United States and Europe may have anywhere from 50 to 250 ms of one-way latency. Similarly, a satellite link typically incurs about 240 to 300 ms of one-way latency, due to the time to transmit a signal up to an orbiting satellite and back.
The impact of latency on network applications may be traced directly to the inefficiencies of TCP under conditions of network latency. Most network applications can be classified into short-transaction based “chatty” applications or long-bulk data transfer applications. Common sources of short-transaction based network traffics include interactive applications (e.g., graphical or web-based user interfaces), various databases, enterprise resource planning (ERP) applications, customer relationship management (CRM) applications, etc. As users access and browse these applications, the applications typically generate numerous short TCP sessions to send and receive small amounts of information that the application then collects and presents to the users. Though most of these short TCP sessions involve sending or receiving a few hundred bytes or kilobytes of data, the actual data transfer is delayed because of TCP's initial session establishment.
To provide reliable communications, TCP first establishes a formal session between a source and a destination before transmitting any application-layer data. TCP provides this initial session establishment such that the destination does in fact receive and acknowledge the transmitted data. Accordingly, the destination can communicate with the source even if any data is lost. TCP's initial session establishment is based on the source first sending a request to initiate a session and then waiting for a response from the destination before transmitting the first application-layer data packet. This initial request and acknowledgment process utilizes one round-trip time (RTT). Hence, even if the source desires to transmit a small number of application-layer data packets across a high latency link, a portion of the total communications time is wasted on the initial session establishment. Thus, the cumulative delay due to the latency on the initial session establishment may decrease the end-user application performance, especially for chatty applications that established many short, serialized TCP sessions.
What is needed is a system and method for optimizing TCP's initial session establishment to improve the performance of short, serialized TCP sessions without intruding upon TCP's core algorithms.